// 导入api内的方法或者axios
import { findAll,saveOrUpdate,findCustomerById} from '@/api/customer.js'
//导入
import { Notification } from 'element-ui';
import {findByCustomerId as findAddressByCId} from '@/api/address.js'
// 配置Vuex结构
export default {
  // vuex中的store分成模块来管理 需要在index.js中引入每一个Vuex模块进行配置 为了解决不同模块命名冲突的问题  将不同模块的namespaced 全部开启 之后 在不同的页面中再使用getters，actions，mutations，state的时候 需要根据不同的模块名来获取
  namespaced: true,
  state: {
    // 获取顾客信息的时候后台总数据
    totalData: {},
    addressData:[],
    customerData:[],
  },
  getters: {
    // 总条数
    total: state => state.totalData.total,
    // 每页的顾客信息
    customerData: state => state.totalData.list
  },
  mutations: {
    changeTotalData(state,data) {
      state.totalData = data;
    },
    changeAddressData(state,data){
      state.addressData = data;
    },
    changeCustomerData(state,data){
      state.customerData=data;
    }
  },
  actions: {
    /**
     * 查找顾客信息
     */
    findAll({ commit }, payload) {
      // payload,说明下面的findAll是api里面的
      findAll(payload).then(res => {
        commit('changeTotalData', res.data)
      })
    },
    /**
     * 新增或修改顾客信息
     */
    async saveOrUpdate({dispatch},payload){
      //接受数据,发送请求,请求成功提示用户保存成功,处理page,分发findAll动作
      let res = await saveOrUpdate(payload.form);
      if(res.status===200){
        Notification({
          type:'success',
          title:"成功",
          message:"保存成功"
        });
        //查找数据
        dispatch("findAll",payload.queryParams);        
        
      }else{
        Notification({
          type:'error',
          title:"失败",
          message:"保存失败"
        })
      }
    },
    /**
     * 通过顾客id找地址信息
     */
    async findAddressByCId({commit},payload){
      let res = await findAddressByCId(payload);
      //保存数据到仓库
      commit('changeAddressData',res.data);
     },
     /**
      * 通过顾客id找到用户信息
      */
     async findCustomerById({commit},payload){
       let res = await findCustomerById(payload);
       //保存数据到仓库
       commit('changeCustomerData',res.data);
      },
  },
    
}